Dynamically switching queueing systems for network switches

ABSTRACT

As example method includes queuing network traffic received at one or more input ports of one or more input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system, subsequent to queuing the network traffic according to the first queueing system, queuing at least a portion of the network traffic according to a second queuing system instead of the first queueing system. According to the first queuing system, the network traffic is queued according to a first degree of granularity. According to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

TECHNICAL FIELD

This disclosure relates to routing data packets using network switches.

BACKGROUND

A network switch is a networking device that interconnects multiple devices on a telecommunication network and manages the flow of data between the devices through the network. In an example implementation, a network switch receives data packets from a source device, and forwards the data packets to one or more destination devices. In some implementations, network switches can be used to interconnect devices and/or manage the flow of data across a local area network (LAN), such as an Ethernet LAN.

SUMMARY

In an aspect, a networking device includes one or more input modules, one or more output modules, and a switching module communicatively coupling the one or more input modules and the one more output modules. Each input module includes one or more input ports. Each output module includes one or more output ports. The networking device is configured to queue network traffic received at one or more of the input ports of the one or more of the input modules to a given output port according to a first queuing system. The first queuing system approximates a target queuing system according to a first degree of granularity. The networking device is also configured to, subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system based on observed traffic characteristics with respect to the given output port. The second queuing system approximates the target queuing system according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

Implementations of this aspect can include one or more of the following features.

In some implementations, the network device can be configured to queue at least the portion of the network traffic according to the second queuing system concurrently with queuing a remainder of network traffic according to the first queuing system.

In some implementations, the networking device can be configured to dynamically switch between queueing at least the portion of the network traffic according to the first queuing system and the second queuing system according to one or more switching criteria.

In some implementations, at least some of the one or more switching criteria can pertain to a bandwidth of network traffic transmitted to each of the output port of the one or more output modules by the networking device.

In some implementations, at least some of the one or more switching criteria can pertain to a bandwidth of network traffic transmitted to each of the output ports of the one or more output modules by the networking device according to a common QoS class.

In some implementations, the observed traffic characteristics with respect to the given output port can be determined based on a statistical sampling of the network traffic.

In some implementations, the statistical sampling can include one or more samples of the network traffic obtained at the one or more input modules.

In some implementations, the statistical sampling can include one or more samples of the network traffic obtained at the one or more output modules.

In some implementations, the networking device can be configured to, subsequent to queuing at least the portion of the network traffic according to the second queuing system instead of the first queueing system, queue at least the portion of the network traffic according to the first queueing system instead of the second queuing system.

As another aspect, a method includes queuing network traffic received at one or more of input ports of one or more of input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system. The first queuing system approximates a target queuing system according to a first degree of granularity. The method also includes, subsequent to queuing the network traffic according to the first queueing system, queuing at least a portion of the network traffic according to a second queuing system instead of the first queueing system based on observed traffic characteristics with respect to the given output port. The second queuing system approximates the target queuing system according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

In another aspect, one or more non-transitory, computer-readable storage media have instructions store thereon, that when executed by one or more processors, cause the one or more processors to perform certain operations. The operations include queuing network traffic received at one or more of input ports of one or more of input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system. The first queuing system approximates a target queuing system according to a first degree of granularity. The operations also include, subsequent to queuing the network traffic according to the first queueing system, queuing at least a portion of the network traffic according to a second queuing system instead of the first queueing system based on observed traffic characteristics with respect to the given output port. The second queuing system approximates the target queuing system according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

In another aspect, a network device includes one or more input modules, one or more output modules, and a switching module communicatively coupling the one or more input modules and the one more output modules. Each input module includes one or more input ports. Each output module includes one or more output ports. The networking device is configured to queue network traffic received at one or more of the input ports of the one or more of the input modules to a given output port according to a first queuing system, and subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system. The first queueing system and the second queuing system each represents an aggregate queueing behavior of the network switch to the given output port. According to the first queuing system, the network traffic is queued according to a first degree of granularity. According to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

Implementations of this aspect can include one more of the following features.

In some implementations, according to the first queuing system, the network traffic can be queued on a basis of a first quality of service (QoS) parameter.

In some implementations, according to the second queuing system, at least the portion of the network traffic can be queued on a basis of logical groups defined with respect to the given output port.

In some implementations, the logical groups can include a plurality of virtual local area networks (VLANs) communicatively coupled to the given output port.

In some implementations, the logical groups can include a plurality of multiprotocol label switching label-switched paths (MPLS LSPs) extending from the one or more input modules to the given port.

In some implementations, according to the second queuing system, at least the portion of the network traffic can be queued on a basis of a second QoS parameter.

In some implementations, the network device can be configured to queue at least the portion of the network traffic according to the second queuing system concurrently with queuing a remainder of network traffic according to the first queuing system.

In some implementations, the networking device can be configured to dynamically switch between queueing at least the portion of the network traffic according to the first queuing system and the second queuing system according to one or more switching criteria.

In some implementations, at least some of the one or more switching criteria can pertain to a bandwidth of network traffic transmitted to each of the output port of the one or more output modules by the networking device.

In some implementations, at least some of the one or more switching criteria can pertain to a bandwidth of network traffic transmitted to each of the output ports of the one or more output modules by the networking device according to a common QoS class.

In some implementations, the networking device can be configured to dynamically switch between queueing the network traffic according to the first queuing system and the second queuing system according to a traffic flow analysis of the network traffic.

In some implementations, the traffic flow analysis can include a statistical sampling of the network traffic.

In some implementations, the statistical sampling can include one or more samples of the network traffic obtained at the one or more input modules.

In some implementations, the statistical sampling can include one or more samples of the network traffic obtained at the one or more output modules.

In some implementations, the networking device can be configured to, subsequent to queuing at least the portion of the network traffic according to the second queuing system instead of the first queueing system, queue at least the portion of the network traffic according to the first queueing system instead of the second queuing system.

In another aspect, a method includes queuing network traffic received at one or more input ports of one or more input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system, and subsequent to queuing the network traffic according to the first queueing system, queuing at least a portion of the network traffic according to a second queuing system instead of the first queueing system. The first queueing system and the second queuing system each represents an aggregate queueing behavior of the network switch to the given output port. According to the first queuing system, the network traffic is queued according to a first degree of granularity. According to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

In another aspect, one or more non-transitory, computer-readable storage media have instructions store thereon, that when executed by one or more processors, cause the one or more processors to perform certain operations. The operations include queuing network traffic received at one or more input ports of one or more input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system, and subsequent to queuing the network traffic according to the first queueing system, queuing at least a portion of the network traffic according to a second queuing system instead of the first queueing system. The first queueing system and the second queuing system each represents an aggregate queueing behavior of the network switch to the given output port. According to the first queuing system, the network traffic is queued according to a first degree of granularity. According to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

In another aspect, a network device includes one or more input modules, one or more output modules, and a switching module communicatively coupling the one or more input modules and the one more output modules. Each input module includes one or more input ports. Each output module includes one or more output ports. The networking device is configured to queue network traffic received at one or more of the input ports of the one or more of the input modules to a given output port according to a first queuing system, and subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system. The first queueing system and the second queuing system together represent an aggregate queueing behavior of the network switch to the given output port. According to the first queuing system, the network traffic is queued according to a first degree of granularity. According to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity. The second degree of granularity is greater than the first degree of granularity.

The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features and advantages will be apparent from the description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a diagram of an example system for system for transmitting data packets between computing devices.

FIG. 2A is a diagram of an example input module.

FIG. 2B is a diagram of an example output module.

FIG. 3 is a diagram of an example technique for transmitting queued data using virtual output queues (VOQs).

FIGS. 4A-4C are diagrams of an example operation of an input module dynamically switch between different queueing systems.

FIG. 5 is a diagram of an example computer system.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

FIG. 1 shows an example system 100 for transmitting data packets between computing devices. The system 100 includes a network switch 102, computing devices 104 (e.g., data sources), and computing devices 106 (e.g., destination devices). The computing devices 104 and 106 are communicatively coupled to the network switch 102 (e.g., via respective interconnections 108, such as networking cables). During operation of the system 100, each of the computing devices 104 transmits, to the network switch 102, data packets destined to one or more of the computing devices 106. The network switch 102 ascertains the intended destination for each data packet, and transmits the packet data to the appropriate computing device 106.

Although FIG. 1 shows the computing devices 104 and 106 as being directly connected to the network switch 102, this need not always be the case. For example, in some implementations, one or more of the computing devices 104 and 106 can be connected to the network switch 102 through one or more intermediate network devices (e.g., one or more additional network switches).

The network switch 102 includes one or more input modules 110, one or more output modules 112, a switching module 118 interconnecting the input modules 110 and the output modules 112, and a control module 120 (e.g., including one or more computer processors) to control the operation of one or more of the components of the network switch 102.

The network switch 102 includes one or more input modules 110 configured to receive data packets from the computing devices 104, and one or more output modules 112 configured to transmit data packets to the computing devices 106. In the example shown in FIG. 1, the network switch 102 includes N input modules 110 and M output modules 112. In some implementations, the network switch 102 can include equal numbers of input modules 110 and output modules 112 (e.g., N=M). In some implementations, the network switch 102 can include different numbers of input modules 110 and output modules 112 (e.g., N≠M).

An example input module 110 is shown in greater detail in FIG. 2A. An input module 110 can implemented using one or more ingress cards. Each input module 110 includes a physical interface (e.g., one or more input ports or sockets) that communicatively couples the input module 110 to one or more interconnects 108. For instance, in the example shown in FIG. 2A, the input module 110 includes X input ports 200. In some implementations, one or more of the input ports 200 can be 8 position 8 contact (8P8C) ports (e.g., RJ45 ports) configured to receive corresponding cables having an 8P8C jack.

Each input module 110 also includes a queueing module 202. The queueing module 202 temporarily stores one or more data packets received by the input module 110, prior to their transmission to a particular destination. As an example, the queueing module 202 can temporarily store one or more data packets, then transmit the data packets to the switching module 118 via an interconnect 204.

In some implementations, an input module 110 can queue multiple data packets in the queueing module 202, and prioritize the transmission of the queued data packets according to a particular queueing systems or schemes (e.g., according to instructions provided by a control module 206 including one or more computer processors). As an example, the input module 110 can transmit queued data packets according to a weighted fair queuing system. For instance, the input module 110 can transmit queued data according to an emulated system wide queueing system such as a virtual output queue (VOQ) system (e.g., in coordination with the output modules 202), as described further herein. The queueing module 202 and/or the control module 204 can be implemented using hardware (e.g., physical data storage devices), software (e.g., logical data storage devices), or a combination thereof.

Referring back to FIG. 1, the network switch 102 also includes a switching module 118 configured to route data packets from the input module 110 to the output module 112 (e.g., to facilitate transmission of the data packets from a data source to its intended destination). In some implementations, the switching module 118 can be implemented using hardware (e.g., physical switching mechanisms that selectively interconnect a particular input module to a particular output module, such as a crossbar switch or matrix switch), software (e.g., logical switching mechanisms that selectively interconnect a particular input module to a particular output module), or a combination thereof. In some implementations, the operation of the switching module 118 can be controlled by a control module 120 (e.g., one or more computer processors that control the switching module 118 such that certain input modules 110 are interconnected with certain output modules 112 to facilitate the transmission of data packets between them). The switching module 118 can be implemented using one or more switching fabrics and/or through mesh connectivity (e.g., full mesh connectivity that communicatively couples each of the input modules 110 to each of the output modules 112).

An example output module 112 is shown in greater detail in FIG. 2B. An output module 112 can implemented using one or more egress cards. Each output module 112 includes a physical interface (e.g., one or more ports or sockets) that communicatively couples the output module 112 to one or more interconnects 108. For instance, in the example shown in FIG. 2B, the input module 110 includes Y output ports 208. In some implementations, one or more of the output ports 208 can be 8P8C ports (e.g., RJ45 ports) configured to receive corresponding cables having an 8P8C jack.

Each output module 112 also includes a scheduling module 210. The scheduling module 210 manages transmission permission for one or more input modules 110, prior to their transmission to a particular destination. As an example, the scheduling module 210 can receive information regarding queued data packets from the input modules 110 (e.g., a length of each queue in the input module), and send a scheduling token to a particular input module 110 when a particular destination is available to receive a data packet queued at that input module 110. In response to receiving the scheduling token, the input module 110 can transmit the queued data packet to the output module 112 for delivery to its destination. The data packets is then transmitted to the appropriate output port 118 via an interconnect 214. The operation of the output module 112 can be controlled by a control module 218 (e.g., including one or more computer processors).

Referring back to FIG. 1, in an example operation of the system 100, a first computing device 104 a generates a data packet designating a second computing device 106 a as the intended destination, and transmits the data packet to a first input module 110 (e.g., “Input Module 1”) of the network switch 102 (e.g., via a respective interconnect 108). The input module 110 ascertains that the second computing device 106 a is the intended destination of the data packet (e.g., based on routing information contained within the data packet). Further, the input module 110 temporarily stores the data packet in its queueing module 202 and awaits an availability of resources to transmit the data packet. One or more criteria can be used to determine whether resources are available to transmit the data packet. For example, determining the availability of resources can include receiving a scheduling token from a schedule module 210 of an output module 112 (e.g., indicating that it is the input module's turn to transmit a data packet to a particular output module 112 and output port), determining an availability the switching module 118 to process the data packet, an availability of an output module 112 associated with the second computing device 106 a (e.g., “Output Module 1”) to receive the data packet, an availability of an output port to output the data packet to the second computing device 106 a, an availability of the second computing device 106 a to receive the data packet, and/or an availability of allocated network resources to transmit the data packet (e.g., a network traffic shaper can limit the transmission of data packets according to particular transmission rate). Upon determining that the appropriate resources are available, the input module 110 transmits the data packet to the switching module 118 for delivery to the output module 112 associated with the second computing device 106 a (e.g., “Output Module 1”). The output module 112 subsequently transmits the data packet to the second computing device 106 a (e.g., via a respective interconnect 108).

In some implementations, multiple devices can be communicatively coupled to a single input module 110. For example, as shown in FIG. 1, multiple computing devices 104 can be coupled to each of the input modules 110. In some implementations, network resources can be distributed among the computing devices according to different logical groups. For example, computing devices can be assigned to one or more virtual local area networks (Virtual LANs or VLANs). Multiple VLANs can share network resources associated with a single interconnect 108 and/or input module 110. For example, for each VLAN, the computing devices in the VLAN can be configured to communicate with one another as if they were communicatively coupled to the same network. Further, each of the VLANs can be logically isolated from one another, such that network traffic from one VLAN is segregated from network traffic from other VLANs with respect to a particular interconnect 108 and/or input module 110. As another example, network resources can be distributed among the computing devices according to other logical groups, such as network channels implemented according to a Multi Protocol Label Switched Path (MPLS LSP) protocol, segment routing (SR) segment identifier (SID), Fifth Generation (5G) Network Slice, or Transport Network Slice.

In some implementations, multiple devices also can be communicatively coupled to a single output module 112. For example, as shown in FIG. 1, multiple computing devices 106 can be coupled to each of the output module 112. In some implementations, network resources can be distributed among the computing devices according to different logical groups. For example, computing devices can be assigned to one or more VLANs. Multiple VLANs can shared network resources associated with a single interconnect 108 and/or output module 1112. For example, for each VLAN, the computing devices in the VLAN can be configured to communicate with one another as if they were communicatively coupled to the same network. Further, each of the VLANs can be logically isolated from one another, such that network traffic from one VLAN is segregated from network traffic from other VLANs with respect to a particular interconnect 108 and/or output module 112. As another example, network resources can be distributed among the computing devices according to other logical groups, such as network channels implemented according to a Multi Protocol Label Switched Path (MPLS LSP) protocol, segment routing (SR) segment identifier (SID), 5G Network Slice, and Transport Network Slice.

Further, the network switch 102 can instruct the input module 110 to regulate the network traffic from the multiple data sources, such that available network resources are distributed between them. For instance, the network switch 102 can instruct the input module 110 to provide a minimum level of service to each data source and/or a maximum level of service to each data source according to a service-level agreement (SLA) (e.g., on a per-VLAN basis or per-computing device basis). As an example, the network switch 102 can instruct the input module 110 to enable a particular data source to transmit data to the input module 110 according to a particular minimum data throughput, according to a particular maximum data throughput, and/or using a particular percentage or share of available network resources (e.g., a particular percentage of the data throughput of the interconnect 108 or input module 110).

Further, the network switch 102 can instruct the input module 110 to “shape” the network traffic from the data sources. For example, the scheduling modules 210 of the output modules 112 can control the flow of network traffic (e.g., by selectively transmitting scheduling tokens according to various scheduling criteria), such as to make more network resources available to certain data sources and/or types of data, and to make fewer network sources available to other data sources and/or types of data (e.g., to prioritize certain data sources and/or types of data over others).

A described herein, the input modules 110 can transmit queued data according to a virtual output queue (VOQ) system. In a VOQ system, data packets are queued in different respective “virtual” queues (e.g., logical queues) on the basis of their respective intended output ports. As an example, referring to FIG. 3, the queueing module 202 of each input module 110 can instantiate different respective virtual output queues (e.g., VOQ 1 to VOQ Z) corresponding to each of the output ports 208 across all of the output modules 112 (e.g., Output Port 1 to Output Port Z). Further, each input module 110 can determine the intended destination output port of each data packet, and store the data packet in the corresponding VOQ. Accordingly, data packets destined for common output ports are queued together in a common VOQ.

A VOQ system is beneficial, for example, in reducing or eliminating head-of-line blocking with respect to the input modules 110. For example, according to a VOQ system, data packets are queued by the input modules 110, and transmitted towards the switching module 118 only according to data rates that can be handled by the output ports 208 of the output modules. In contrast, according to other queuing systems (e.g., an egress queuing system), input modules 110 may transmit data packets according to data rates that exceed what can be handled by the output ports 208, and at least some of the data packets may need to be queued by the output modules 112 prior to delivery to the appropriate output ports 208.

As described herein, an input module 110 can queue multiple data packets in its queueing module 202, and prioritize the transmission of the queued data packets according to a particular queueing systems that each represents and/or together represents an aggregate queueing behavior of the network switch to each of the output ports 208 of the output modules 112. For example, the queueing systems each of the queuing systems can approximate the same goal (e.g., queueing data packets destined for a particular output port), but using different queuing techniques. In some implementations, an input module 110 can selectively switch between different queueing systems during operation to improve the performance and/or efficiency of the network switch 102.

As an example, an input module 110 can prioritize the transmission of queued data packets according to a first queuing system (e.g., a queueing system or scheme suitable for transmitting data during general, default, or “normal” network conditions). However, when one or more first criteria are met (e.g., corresponding to particular network conditions), the input module 110 can instead prioritize the transmission at least some of the queued data packets according to a second queuing system (e.g., a queuing system or scheme that enables data to be transmitted more effectively and/or efficiency under those network conditions). Further, when one or more second criteria are met (e.g., corresponding to a return to general, default, or normal network conditions), the input module 110 can revert to prioritizing the transmission of at least some of the queued data packets according to the first queuing system.

Further, the network switch 102 can dynamically switch the queueing systems of each of the input modules 110 independently from one another. As an example, by default, the network switch 102 can operate each of the input modules 110 according to a first queueing system. When one or more first criteria are met with respect to a particular input module 110, the network switch 102 can operate that input module 110, at least in part, according to a second queueing system, while continuing the operate the other input module 110 according to the first queuing system. Similarly, the network switch 102 can selectively change the queueing systems of each of the input module 110 according to network conditions.

In some implementations, by default, the network switch 102 can instruct an input module 110 to queue data packets according to a first queueing system having a first degree of granularity. In some implementations, the first degree of granularity can be relatively low (e.g., compared to that of a second queueing system). For instance, the input module 110 can aggregate or “bundle” data packets destined to multiple different destinations (e.g., shaped destinations, such as VLANs, MPLS LSPs, SR SIDs, 5G Network Slices, or Transport Network Slices), and queue them into a common set of VOQs (e.g., a common set of VOQs 1 to Z, as shown in FIG. 3). As an example, the input module 110 can aggregate the data packets received from each of the input ports 200 together, and store the data packets according to a common set of VOQs (e.g., a single common set of VOQs 1 to Z) to await processing by the switching module 118. As another example, the input module 110 can aggregate the data packets received from each of the input ports 200 together on the basis of one or more quality of service (QoS) parameters (e.g., on the basis of QoS “classes” of data that are being transmitted), and process the data packets according to different respective sets of VOQs (e.g., a different set of VOQs 1 to Z for each QoS class). In practice, other dimensions of granularity are possible, depending on the implementation.

However, under certain circumstances, the network switch 102 can instruct an input module 110 to queue data packets according to a second queueing system having a higher second degree of granularity. For example, the input module 110 can differentiate between different flows of network traffic (along any dimensions of granularity), and selectively instantiate one or more VOQs to process data packets associated with a particular flow of network traffic. Accordingly, data packets associated with certain flows of network traffic may be queued in their own dedicated VOQs (e.g., rather than in a common set of VOQs).

In practice, the network switch 102 can differentiate between different flows of network traffic based on any dimensions of granularity. As an example, the network switch 102 can differentiate between different flows of network traffic based on the network traffic's destination output port, the output-side logical group (e.g., output-side VLAN, MPLS LSP, SR SID, 5G Network Slice, or Transport Network Slice), and/or the QoS class of the network traffic. If a particular flow of network traffic meets one or more first criteria, the network switch 102 can instruct an input module 110 to instantiate one or more VOQs to selectively process data associated with that flow of network traffic.

Further, if the particular flow of network traffic meets one or more second criteria, the network switch 102 can instruct the input module 110 to remove the VOQs dedicated to queuing that flow of network traffic, and revert to the less granular queuing system (e.g., revert to queueing that flow of network traffic using the common set(s) of VOQs).

In some implementations, the network switch 102 can determine a target or “ideal” queueing system for queuing network traffic (e.g., if the use of network resources were not a limiting factor). For example, the target or ideal queueing system can queue network traffic according to a relatively high degree of granularity (e.g., by instantiating VOQs and queueing network traffic in those VOQs according to a relatively higher degree of granularity with respect to the network traffic). However, based on network conditions and the availability of resources, the network switch 102 can “approximate” the target or ideal queueing system with different levels of granularity (e.g., by queuing data according to queuing systems having relatively lower degree of granularity, but approximating, at least in part, the behavior of the target or ideal queueing system). For example, the network switch 102 can instantiate VOQs and queue network traffic in those VOQs according to a relatively lower degree of granularity with respect to the network traffic. The network switch 102 can dynamically increase the granularity of the queuing system (e.g., to better approximately the target or ideal queueing system, at the expense of network resources) or decrease the granularity of the queuing system (e.g., to save on network resources) based on the conditions of the network, such as the queued network traffic, the availability of network resources, and other such information.

In some implementations, target or ideal queuing system can be determined based on information regarding the conditions of the network, such as received signaling information (e.g., Resource Reservation Protocol—Traffic Engineering (RSVP-TE) and P Path Computation Element Communication Protocol (PCEP) information) and local configuration information (e.g., information regarding VLAN group shaper assignments, QoS class to queue assignments, queue weight configurations, queue length configurations, and queue priority configurations). In some implementations, local configuration information can be stored in non-volatile storage and can be communicated via Network Configuration Protocol (NETCONF) or via a command line interface (CLI).

The network switch 102 can dynamically switch one or more of the input modules 110 between lower and higher granularity queuing systems based on monitoring information obtained during operation of the network switch 102. For instance, during operation, the network switch 102 can monitor the queueing of data packets by each of the input module 110, the transmission of data packets by the switching module 118, and/or the transmission of data packets to their destinations by the output modules 112.

As an example, the network switch 102 can monitor the number of data packets that are queued by each of the input modules 110, the rate or frequency at which data packets are queued by each of the input modules 110, the data size of the data packets that are queued by each of the input modules 110, the throughput of incoming network traffic to each of the input modules 110, the utilization rate of each of the input modules 112, and/or other metrics pertaining to the queuing of data packets by the input modules 112.

As another example, the network switch 102 can monitor the number of data packets that are processed by the switching module 118, the rate or frequency at which data packets are processed by the switching module 118, the data size of the data packets that are processed by the switching module 118, the throughput of network traffic processed by the switching module 118, the utilization rate of the switching module 118, and/or other metrics pertaining to the processing of data packets by the switching module 118.

As another example, the network switch 102 can monitor the number of data packets that are received and processed by each of the output modules 112, the rate or frequency at which data packets are received by each of the output modules 112, the data size of the data packets that are received by each of the output modules 112, the throughput of network traffic received by each of the output modules 112, the utilization rate of each of the output modules 112, and/or other metrics pertaining to the processing of data packets by the output modules 112.

Further, the network switch 102 can monitor network traffic with respect to different dimensions of granularity. For example, the network switch 102 can monitor network traffic on a per computer device basis (e.g., source devices and/or destination devices), a per input port basis, a per input module basis, a per logical group basis (e.g., per input-side logical group and/or per output-side logical group, such as VLAN, MPLS LSP, SR SID, 5G Network Slice, or Transport Network Slice), a per output port basis, a per output module basis, a per data type or data class basis (e.g., QoS classes), and/or according to any other basis.

In some implementations, the network switch 102 can monitor each and every data packet that is received and/or processed by the network switch 102. In some implementations, the network switch 102 can monitor a subset of the data packet that are received and/or processed by the network switch 102 (e.g., a statistical sampling of every nth data packet).

The network switch 102 can selectively instruct a particular input module 110 to queue network traffic differently based on the gathered information. For example, when one or more first criteria are met with respect to a particular flow of network traffic at a particular input module 110, the network switch 102 can instruct that input module 110 queue network traffic according to a higher degree of granularity (e.g., by instantiating VOQs dedicated to queuing data packet for that flow of network traffic), while the other input modules 110 continue to queue data according to a lower degree of granularity. The one or more first criteria can correspond to a sufficiently high flow of traffic to a particular output port, such that the use of dedicated VOQs is an effective or efficient use of resources. For example, the one or more first criteria can include a criterion that a number of the data packets queued at the input module 110 and destined for a particular output port exceeds a particular threshold number. As another example, the one or more first criteria can include a criterion that a data size of the data packets queued at the input module 110 and destined for a particular output port exceeds a particular threshold data size. As another example, the one or more first criteria can include a criterion that a utilization metric associated with the flow of network traffic to a particular output port exceeds a particular threshold level. As another example, the one or more first criteria can include a criterion that a transmission rate of the network traffic transmitted by the input module 110 to a particular output port exceeds a threshold rate (e.g., a particular rate allocated according to a service level agreement). As another example, the one or more first criteria can include time-based requirements. For example, the one or more first criteria can include a criterion that a property of the network traffic meet or exceed a particular threshold for a particular period of time. In some implementations, the one more first criteria can also distinguish between different flows of network traffic on the basis of their intended output-side logical group (e.g., intended output-side VLAN, MPLS LSP, SR SID, 5G Network Slice, or Transport Network Slice), QoS class, and/or other characteristics. In some implementations, the one or more first criteria can include a criterion that the available amount of network resources (e.g., hardware and/or computational resources) is sufficiently high to justify instantiating a dedicated VOQ for a particular traffic flow. In some implementations, the one or more first criteria can be based on a neural network analysis or other Machine Learning (ML) techniques (e.g., using one or more measured properties of the network traffic as inputs) that indicates that the use of dedicated VOQs for a particular traffic flow is an effective or efficient use of resources. In some implementations, the one or more first criteria can be based on offline learning

Subsequently, when one or more second criteria are met with respect to that flow of network traffic at that input module 110, the network switch 102 can instruct that input module 110 revert to queuing network traffic according to the lower degree of granularity. The one or more second criteria can correspond to a sufficiently low flow of traffic to a particular output port, such that the use of dedicated VOQ is no longer an effective or efficient use of resources. For example, the one or more second criteria can include a criterion that a number of the data packets queued at the input module 110 and destined for a particular output port no longer exceeds a particular threshold number. As another example, the one or more second criteria can include a criterion that a data size of the data packets queued at the input module 110 and destined for a particular output port no longer exceeds a particular threshold data size. As another example, the one or more second criteria can include a criterion that a utilization metric associated with the flow of network traffic to a particular output port no longer exceeds a particular threshold level. As another example, the one or more second criteria can include a criterion that a transmission rate of the network traffic transmitted by the input module 110 to and a particular output port no longer exceeds a threshold rate (e.g., a particular rate allocated according to a service level agreement). As another example, the one or more second criteria can include time-based requirements. For example, the one or more second criteria can include a criterion that a property of the network traffic no longer exceeds a particular threshold for a particular period of time. In some implementations, the one more second criteria can also distinguish between different flows of network traffic on the basis of their intended output-side logical group (e.g., intended output-side VLAN, MPLS LSP, SR SID, 5G Network Slice, or Transport Network Slice), QoS class, and/or other characteristics. In some implementations, the one or more second criteria can include a criterion that the amount of network resources (e.g., hardware and/or computational resources) is sufficiently low, such that having a dedicated VOQ for a particular network flow is no longer justified. In some implementations, the one or more second criteria can be based on a neural network analysis or other Machine Learning (ML) techniques (e.g., using one or more measured properties of the network traffic as inputs) that indicates that the use of dedicated VOQs for a particular traffic flow is no longer an effective or efficient use of resources. In some implementations, the one or more second criteria can be based on offline learning

An example operation of an input module 110 (e.g., “Input Module 1”) to dynamically switch between different queueing systems is shown in FIGS. 4A-4C. Although a single input module 110 shown, multiple input modules can be operated in a similar manner (e.g., within a common network switch 102).

As shown in FIG. 4A, the input module 110 can initially queue flows of network traffic according to a lower degree of granularity using the queueing module 202. For example, the input module 110 can queue each of the data packets received at its input ports 200 in the queuing module 202 according to a single default set of VOQ 1 to VOQ Z (e.g., corresponding to Z output ports 208 across the output modules 112).

As described herein, the input module 110 can dynamically change the manner in which flows of network traffic are queued. For instance, in response certain network conditions, to the input module 110 can selectively queue traffic with a greater degree of granularity to improve the performance of the network switch 102. In the example shown in FIG. 4B, a flow of network traffic to an output-side VLAN 1 connected to an “Output Port 1” (e.g., as shown in FIG. 3) has met one or more first criteria indicating that it would be effective and/or efficient to use a dedicated VOQ to queue data packets for this flow of network traffic. In response, the input module 110 instantiates a VOQ A, and queues data packets for this flow of network traffic in the newly instantiated VOQ, rather than in the default set of VOQs.

Similarly, the flows of network traffic (i) to an output-side VLAN 6 connected to an “Output Port 1,” (ii) along a MPLS LSP 3 extending to an “Output Port 5,” and (iii) along a MPLS LSP 9 extending to an “Output Port 7” (e.g., as shown in FIG. 3, respectively), has also met the one or more first criteria. In response, the input module 110 instantiates respective VOQs for each of these flows of network traffic (e.g., VOQ B, VOQ C, and VOQ D, respectively), and queues data packets for these flows of network traffic in the respective newly instantiated VOQs, rather than in the default set of VOQs. All other flows of network traffic (e.g., flows of network traffic that do not meet the one or more first criteria) continue to be queued in the default set of VOQs. Accordingly, flows of network traffic are queued according to a greater degree of granularity (e.g., on the basis of their destination output port and output-side logical groups)

Further, the input module 110 can dynamically revert to queueing one or more of the flows of network traffic using the default set of VOQs. For example, referring to FIG. 4C, the flow of network traffic to the output-side VLAN 1 connected to the “Output Port 1” has met one or more second criteria indicating that it would no longer be effective and/or efficient to use a dedicated VOQ to queue data packets for this flow of network traffic. In response, the input module 110 removes the VOQ A associated with this flow of network traffic, and reverts to queuing data packets for this flow of network traffic in the default set of VOQs. Similarly, the flow of network traffic along the MPLS LSP 9 extending to the “Output Port 7” has also met the one or more second criteria. In response, the input module 110 removes the VOQ D associated with this flow of network traffic, and reverts to queuing data packets for this flow of network traffic in the default set of VOQs.

Although FIGS. 4A-4C show the selective instantiation of VOQs based on the destination output port and the destination output-side logical groups of data packets, this is merely an illustrative example. In practice, VOQs can be selectively instantiated according to other characteristics. For example, in some implementations, VOQs can be selectively instantiated further on the basis of the QoS class of the network traffic (e.g., in addition to the destination output port and the destination output-side logical groups).

Example Systems

Some implementations of subject matter and operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. For example, in some implementations, the computer devices 104 and 106, the network switch 102 (including some or all of its components) can be implemented using digital electronic circuitry, or in computer software, firmware, or hardware, or in combinations of one or more of them.

Some implementations described in this specification can be implemented as one or more groups or modules of digital electronic circuitry, computer software, firmware, or hardware, or in combinations of one or more of them. Although different modules can be used, each module need not be distinct, and multiple modules can be implemented on the same digital electronic circuitry, computer software, firmware, or hardware, or combination thereof.

Some implementations described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by, or to control the operation of, data processing apparatus. A computer storage medium can be, or can be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).

The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.

A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

Some of the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. A computer includes a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. A computer may also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices (e.g., EPROM, EEPROM, flash memory devices, and others), magnetic disks (e.g., internal hard disks, removable disks, and others), magneto optical disks, and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, operations can be implemented on a computer having a display device (e.g., a monitor, or another type of display device) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse, a trackball, a tablet, a touch sensitive screen, or another type of pointing device) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.

A computer system may include a single computing device, or multiple computers that operate in proximity or generally remote from each other and typically interact through a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), a network comprising a satellite link, and peer-to-peer networks (e.g., ad hoc peer-to-peer networks). A relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

FIG. 5 shows an example computer system 500 that includes a processor 500, a memory 520, a storage device 530 and an input/output device 540. Each of the components 510, 520, 530 and 540 can be interconnected, for example, by a system bus 550. The processor 510 is capable of processing instructions for execution within the system 500. In some implementations, the processor 510 is a single-threaded processor, a multi-threaded processor, or another type of processor. The processor 510 is capable of processing instructions stored in the memory 520 or on the storage device 530. The memory 520 and the storage device 530 can store information within the system 500.

The input/output device 540 provides input/output operations for the system 500. In some implementations, the input/output device 540 can include one or more of a network interface device, e.g., an Ethernet card, a serial communication device, e.g., an RS-232 port, and/or a wireless interface device, e.g., an 802.11 card, a 3G wireless modem, a 4G wireless modem, a 5G wireless modem, etc. In some implementations, the input/output device can include driver devices configured to receive input data and send output data to other input/output devices, e.g., keyboard, printer and display devices 560. In some implementations, mobile computing devices, mobile communication devices, and other devices can be used.

While this specification contains many details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features specific to particular non-limiting examples. Certain features that are described in this specification in the context of separate implementations can also be combined. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple embodiments separately or in any suitable sub-combination.

A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other implementations are within the scope of the following claims. 

What is claimed is:
 1. A networking device comprising: one or more input modules, wherein each input module comprises one or more input ports; one or more output modules, wherein each output module comprises one or more output ports; and a switching module communicatively coupling the one or more input modules and the one more output modules; wherein the networking device is configured to: queue network traffic received at one or more of the input ports of the one or more of the input modules to a given output port according to a first queuing system, wherein the first queuing system approximates a target queuing system according to a first degree of granularity, and subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system based on observed traffic characteristics with respect to the given output port, wherein the second queuing system approximates the target queuing system according to a second degree of granularity, wherein the second degree of granularity is greater than the first degree of granularity.
 2. The networking device of claim 1, wherein the network device is configured to queue at least the portion of the network traffic according to the second queuing system concurrently with queuing a remainder of network traffic according to the first queuing system.
 3. The networking device of claim 1, wherein the networking device is configured to dynamically switch between queueing at least the portion of the network traffic according to the first queuing system and the second queuing system according to one or more switching criteria.
 4. The networking device of claim 3, wherein at least some of the one or more switching criteria pertains to a bandwidth of network traffic transmitted to each of the output port of the one or more output modules by the networking device.
 5. The networking device of claim 4, wherein at least some of the one or more switching criteria pertains to a bandwidth of network traffic transmitted to each of the output ports of the one or more output modules by the networking device according to a common QoS class.
 6. The networking device of claim 1, wherein the observed traffic characteristics with respect to the given output port are determined based on a statistical sampling of the network traffic.
 7. The network device of claim 6, wherein the statistical sampling comprises one or more samples of the network traffic obtained at the one or more input modules.
 8. The network device of claim 6, wherein the statistical sampling comprises one or more samples of the network traffic obtained at the one or more output modules.
 9. The network device of claim 1, wherein the networking device is configured to: subsequent to queuing at least the portion of the network traffic according to the second queuing system instead of the first queueing system, queue at least the portion of the network traffic according to the first queueing system instead of the second queuing system.
 10. A method comprising: queuing network traffic received at one or more of input ports of one or more of input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system, wherein the first queuing system approximates a target queuing system according to a first degree of granularity, subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system based on observed traffic characteristics with respect to the given output port, wherein the second queuing system approximates the target queuing system according to a second degree of granularity, wherein the second degree of granularity is greater than the first degree of granularity.
 11. One or more non-transitory, computer-readable storage media having instructions store thereon, that when executed by one or more processors, cause the one or more processors to perform operations comprising: queuing network traffic received at one or more of input ports of one or more of input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system, wherein the first queuing system approximates a target queuing system according to a first degree of granularity, subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system based on observed traffic characteristics with respect to the given output port, wherein the second queuing system approximates the target queuing system according to a second degree of granularity, wherein the second degree of granularity is greater than the first degree of granularity.
 12. A networking device comprising: one or more input modules, wherein each input module comprises one or more input ports; one or more output modules, wherein each output module comprises one or more output ports; and a switching module communicatively coupling the one or more input modules and the one more output modules; wherein the networking device is configured to: queue network traffic received at one or more of the input ports of the one or more of the input modules to a given output port according to a first queuing system, subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system, wherein the first queueing system and the second queuing system each represents an aggregate queueing behavior of the network switch to the given output port, wherein according to the first queuing system, the network traffic is queued according to a first degree of granularity, wherein according to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity, and wherein the second degree of granularity is greater than the first degree of granularity.
 13. The networking device of claim 12, wherein according to the first queuing system, the network traffic is queued on a basis of a first quality of service (QoS) parameter.
 14. The networking device of claim 12, wherein according to the second queuing system, at least the portion of the network traffic is queued on a basis of logical groups defined with respect to the given output port.
 15. The networking device of claim 14, wherein the logical groups comprise a plurality of virtual local area networks (VLANs) communicatively coupled to the given output port.
 16. The networking device of claim 14, wherein the logical groups comprise a plurality of multiprotocol label switching label-switched paths (MPLS LSPs) extending from the one or more input modules to the given port.
 17. The networking device of claim 14, wherein according to the second queuing system, at least the portion of the network traffic is queued on a basis of a second QoS parameter.
 18. The networking device of claim 17, wherein the network device is configured to queue at least the portion of the network traffic according to the second queuing system concurrently with queuing a remainder of network traffic according to the first queuing system.
 19. The networking device of claim 12, wherein the networking device is configured to dynamically switch between queueing at least the portion of the network traffic according to the first queuing system and the second queuing system according to one or more switching criteria.
 20. The networking device of claim 19, wherein at least some of the one or more switching criteria pertains to a bandwidth of network traffic transmitted to each of the output port of the one or more output modules by the networking device.
 21. The networking device of claim 20, wherein at least some of the one or more switching criteria pertains to a bandwidth of network traffic transmitted to each of the output ports of the one or more output modules by the networking device according to a common QoS class.
 22. The networking device of claim 20, wherein the networking device is configured to dynamically switch between queueing the network traffic according to the first queuing system and the second queuing system according to a traffic flow analysis of the network traffic.
 23. The networking device of claim 22, wherein the traffic flow analysis comprises a statistical sampling of the network traffic.
 24. The network device of claim 23, wherein the statistical sampling comprises one or more samples of the network traffic obtained at the one or more input modules.
 25. The network device of claim 23, wherein the statistical sampling comprises one or more samples of the network traffic obtained at the one or more output modules.
 26. The network device of claim 12, wherein the networking device is configured to: subsequent to queuing at least the portion of the network traffic according to the second queuing system instead of the first queueing system, queue at least the portion of the network traffic according to the first queueing system instead of the second queuing system.
 27. A method comprising: queuing network traffic received at one or more input ports of one or more input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system, subsequent to queuing the network traffic according to the first queueing system, queuing at least a portion of the network traffic according to a second queuing system instead of the first queueing system, wherein the first queueing system and the second queuing system each represents an aggregate queueing behavior of the network switch to the given output port, wherein according to the first queuing system, the network traffic is queued according to a first degree of granularity, wherein according to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity, and wherein the second degree of granularity is greater than the first degree of granularity.
 28. One or more non-transitory, computer-readable storage media having instructions store thereon, that when executed by one or more processors, cause the one or more processors to perform operations comprising: queuing network traffic received at one or more input ports of one or more input modules of a network switch to a given output port of an output module of the network switch according to a first queuing system, subsequent to queuing the network traffic according to the first queueing system, queuing at least a portion of the network traffic according to a second queuing system instead of the first queueing system, wherein the first queueing system and the second queuing system each represents an aggregate queueing behavior of the network switch to the given output port, wherein according to the first queuing system, the network traffic is queued according to a first degree of granularity, wherein according to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity, and wherein the second degree of granularity is greater than the first degree of granularity.
 29. A networking device comprising: one or more input modules, wherein each input module comprises one or more input ports; one or more output modules, wherein each output module comprises one or more output ports; and a switching module communicatively coupling the one or more input modules and the one more output modules; wherein the networking device is configured to: queue network traffic received at one or more of the input ports of the one or more of the input modules to a given output port according to a first queuing system, subsequent to queuing the network traffic according to the first queueing system, queue at least a portion of the network traffic according to a second queuing system instead of the first queueing system, wherein the first queueing system and the second queuing system together represent an aggregate queueing behavior of the network switch to the given output port, wherein according to the first queuing system, the network traffic is queued according to a first degree of granularity, wherein according to the second queuing system, at least the portion of the network traffic is queued according to a second degree of granularity, and wherein the second degree of granularity is greater than the first degree of granularity. 